using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeostatisticalAnalystTools._Interpolation
{
    /// <summary>
    /// <para>Local Polynomial Interpolation</para>
    /// <para>Fits the specified order (zero, first, second, third, and so on) polynomial, each within specified overlapping neighborhoods, to produce an output surface.</para>
    /// <para>拟合指定的阶数（零、第一、第二、第三等）多项式，每个多项式都在指定的重叠邻域内，以生成输出曲面。</para>
    /// </summary>    
    [DisplayName("Local Polynomial Interpolation")]
    public class LocalPolynomialInterpolation : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public LocalPolynomialInterpolation()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input features</para>
        /// <para>The input point features containing the z-values to be interpolated.</para>
        /// <para>包含要插值的 z 值的输入点要素。</para>
        /// </param>
        /// <param name="_z_field">
        /// <para>Z value field</para>
        /// <para>Field that holds a height or magnitude value for each point. This can be a numeric field or the Shape field if the input features contain z-values or m-values.</para>
        /// <para>保存每个点的高度或大小值的字段。这可以是数值字段，也可以是形状字段（如果输入要素包含 z 值或 m 值）。</para>
        /// </param>
        public LocalPolynomialInterpolation(object _in_features, object _z_field)
        {
            this._in_features = _in_features;
            this._z_field = _z_field;
        }
        public override string ToolboxName => "Geostatistical Analyst Tools";

        public override string ToolName => "Local Polynomial Interpolation";

        public override string CallName => "ga.LocalPolynomialInterpolation";

        public override List<string> AcceptEnvironments => ["cellSize", "coincidentPoints", "extent", "geographicTransformations", "mask", "outputCoordinateSystem", "parallelProcessingFactor", "snapRaster", "workspace"];

        public override object[] ParameterInfo => [_in_features, _z_field, _out_ga_layer, _out_raster, _cell_size, _power, _search_neighborhood, _kernel_function.GetGPValue(), _bandwidth, _use_condition_number.GetGPValue(), _condition_number, _weight_field, _output_type.GetGPValue()];

        /// <summary>
        /// <para>Input features</para>
        /// <para>The input point features containing the z-values to be interpolated.</para>
        /// <para>包含要插值的 z 值的输入点要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>Z value field</para>
        /// <para>Field that holds a height or magnitude value for each point. This can be a numeric field or the Shape field if the input features contain z-values or m-values.</para>
        /// <para>保存每个点的高度或大小值的字段。这可以是数值字段，也可以是形状字段（如果输入要素包含 z 值或 m 值）。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Z value field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _z_field { get; set; }


        /// <summary>
        /// <para>Output geostatistical layer</para>
        /// <para>The geostatistical layer produced. This layer is required output only if no output raster is requested.</para>
        /// <para>生成的地统计图层。仅当未请求输出栅格时，此图层才是必需的输出。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output geostatistical layer")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_ga_layer { get; set; } = null;


        /// <summary>
        /// <para>Output raster</para>
        /// <para>The output raster. This raster is required output only if no output geostatistical layer is requested.</para>
        /// <para>输出栅格。仅当未请求输出地统计图层时，此栅格才是必需的输出。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output raster")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_raster { get; set; } = null;


        /// <summary>
        /// <para>Output cell size</para>
        /// <para><xdoc>
        ///   <para>The cell size at which the output raster will be created.</para>
        ///   <para>This value can be explicitly set in the Environments by the Cell Size parameter.</para>
        ///   <para>If not set, it is the shorter of the width or the height of the extent of the input point features, in the input spatial reference, divided by 250.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将创建输出栅格的像元大小。</para>
        ///   <para>此值可以通过像元大小参数在“环境”中显式设置。</para>
        ///   <para>如果未设置，则为输入空间参考中输入点要素范围的宽度或高度除以 250 的较短者。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output cell size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _cell_size { get; set; } = null;


        /// <summary>
        /// <para>Order of polynomial</para>
        /// <para>The order of the polynomial.</para>
        /// <para>多项式的顺序。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Order of polynomial")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _power { get; set; } = 1;


        /// <summary>
        /// <para>Search neighborhood</para>
        /// <para><xdoc>
        ///   <para>Defines which surrounding points will be used to control the output. Standard is the default.</para>
        ///   <para>Standard</para>
        ///   <bulletList>
        ///     <bullet_item>Major semiaxis—The major semiaxis value of the searching neighborhood.</bullet_item><para/>
        ///     <bullet_item>Minor semiaxis—The minor semiaxis value of the searching neighborhood.</bullet_item><para/>
        ///     <bullet_item>Angle—The angle of rotation for the axis (circle) or semimajor axis (ellipse) of the moving window.</bullet_item><para/>
        ///     <bullet_item>Max neighbors—The maximum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Min neighbors—The minimum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Sector Type—The geometry of the neighborhood.
        ///     <bulletList>
        ///       <bullet_item>One sector—Single ellipse.  </bullet_item><para/>
        ///       <bullet_item>Four sectors—Ellipse divided into four sectors.  </bullet_item><para/>
        ///       <bullet_item>Four sectors shifted—Ellipse divided into four sectors and shifted 45 degrees.  </bullet_item><para/>
        ///       <bullet_item>Eight sectors—Ellipse divided into eight sectors.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>Smooth</para>
        ///   <bulletList>
        ///     <bullet_item>Major semiaxis—The major semiaxis value of the searching neighborhood.</bullet_item><para/>
        ///     <bullet_item>Minor semiaxis—The minor semiaxis value of the searching neighborhood.</bullet_item><para/>
        ///     <bullet_item>Angle—The angle of rotation for the axis (circle) or semimajor axis (ellipse) of the moving window.</bullet_item><para/>
        ///     <bullet_item>Smoothing factor—The Smooth Interpolation option creates an outer ellipse and an inner ellipse at a distance equal to the Major Semiaxis multiplied by the Smoothing factor. The points that fall outside the smallest ellipse but inside the largest ellipse are weighted using a sigmoidal function with a value between zero and one.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Standard Circular</para>
        ///   <bulletList>
        ///     <bullet_item>Radius—The length of the radius of the search circle.</bullet_item><para/>
        ///     <bullet_item>Angle—The angle of rotation for the axis (circle) or semimajor axis (ellipse) of the moving window.</bullet_item><para/>
        ///     <bullet_item>Max neighbors—The maximum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Min neighbors—The minimum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Sector Type—The geometry of the neighborhood.
        ///     <bulletList>
        ///       <bullet_item>One sector—Single ellipse.  </bullet_item><para/>
        ///       <bullet_item>Four sectors—Ellipse divided into four sectors.  </bullet_item><para/>
        ///       <bullet_item>Four sectors shifted—Ellipse divided into four sectors and shifted 45 degrees.  </bullet_item><para/>
        ///       <bullet_item>Eight sectors—Ellipse divided into eight sectors.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>Smooth Circular</para>
        ///   <bulletList>
        ///     <bullet_item>Radius—The length of the radius of the search circle.</bullet_item><para/>
        ///     <bullet_item>Smoothing factor—The Smooth Interpolation option creates an outer ellipse and an inner ellipse at a distance equal to the Major Semiaxis multiplied by the Smoothing factor. The points that fall outside the smallest ellipse but inside the largest ellipse are weighted using a sigmoidal function with a value between zero and one.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义将用于控制输出的周围点。标准是默认值。</para>
        ///   <para>标准</para>
        ///   <bulletList>
        ///     <bullet_item>主半轴 - 搜索邻域的主半轴值。</bullet_item><para/>
        ///     <bullet_item>小半轴 - 搜索邻域的短半轴值。</bullet_item><para/>
        ///     <bullet_item>角度 （Angle） - 移动窗口的轴（圆）或半长轴（椭圆）的旋转角度。</bullet_item><para/>
        ///     <bullet_item>最大邻居数 - 将用于估计未知位置值的最大邻居数。</bullet_item><para/>
        ///     <bullet_item>最小邻居 - 将用于估计未知位置的值的最小邻居数。</bullet_item><para/>
        /// <bullet_item>扇区类型 - 邻域的几何。
        ///     <bulletList>
        ///       <bullet_item>一个扇区 - 单个椭圆。</bullet_item><para/>
        ///       <bullet_item>四个扇区 - 椭圆分为四个扇区。</bullet_item><para/>
        ///       <bullet_item>四个扇区移动 - 椭圆分为四个扇区并移动 45 度。</bullet_item><para/>
        ///       <bullet_item>八个扇区 - 椭圆分为八个扇区。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>光滑</para>
        ///   <bulletList>
        ///     <bullet_item>主半轴 - 搜索邻域的主半轴值。</bullet_item><para/>
        ///     <bullet_item>小半轴 - 搜索邻域的短半轴值。</bullet_item><para/>
        ///     <bullet_item>角度 （Angle） - 移动窗口的轴（圆）或半长轴（椭圆）的旋转角度。</bullet_item><para/>
        ///     <bullet_item>平滑因子 - “平滑插值”（Smooth Interpolation） 选项在距离等于“主半轴”乘以“平滑因子”（Smoothing factor） 的距离处创建外椭圆和内椭圆。对于位于最小椭圆之外但在最大椭圆内的点，使用值介于 0 和 1 之间的 S 形函数进行加权。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>标准通函</para>
        ///   <bulletList>
        ///     <bullet_item>半径 - 搜索圆半径的长度。</bullet_item><para/>
        ///     <bullet_item>角度 （Angle） - 移动窗口的轴（圆）或半长轴（椭圆）的旋转角度。</bullet_item><para/>
        ///     <bullet_item>最大邻居数 - 将用于估计未知位置值的最大邻居数。</bullet_item><para/>
        ///     <bullet_item>最小邻居 - 将用于估计未知位置的值的最小邻居数。</bullet_item><para/>
        /// <bullet_item>扇区类型 - 邻域的几何。
        ///     <bulletList>
        ///       <bullet_item>一个扇区 - 单个椭圆。</bullet_item><para/>
        ///       <bullet_item>四个扇区 - 椭圆分为四个扇区。</bullet_item><para/>
        ///       <bullet_item>四个扇区移动 - 椭圆分为四个扇区并移动 45 度。</bullet_item><para/>
        ///       <bullet_item>八个扇区 - 椭圆分为八个扇区。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>光滑的圆形</para>
        ///   <bulletList>
        ///     <bullet_item>半径 - 搜索圆半径的长度。</bullet_item><para/>
        ///     <bullet_item>平滑因子 - “平滑插值”（Smooth Interpolation） 选项在距离等于“主半轴”乘以“平滑因子”（Smoothing factor） 的距离处创建外椭圆和内椭圆。对于位于最小椭圆之外但在最大椭圆内的点，使用值介于 0 和 1 之间的 S 形函数进行加权。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Search neighborhood")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _search_neighborhood { get; set; } = null;


        /// <summary>
        /// <para>Kernel function</para>
        /// <para><xdoc>
        ///   <para>The kernel function used in the simulation.</para>
        ///   <bulletList>
        ///     <bullet_item>Exponential—The function grows or decays proportionally.</bullet_item><para/>
        ///     <bullet_item>Gaussian—Bell-shaped function that falls off quickly toward plus or minus infinity.</bullet_item><para/>
        ///     <bullet_item>Quartic—Fourth-order polynomial function.</bullet_item><para/>
        ///     <bullet_item>Epanechnikov—A discontinuous parabolic function.</bullet_item><para/>
        ///     <bullet_item>Fifth-order polynomial—Fifth-order polynomial function.</bullet_item><para/>
        ///     <bullet_item>Constant—An indicator function.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>仿真中使用的内核函数。</para>
        ///   <bulletList>
        ///     <bullet_item>指数 （Exponential） - 函数按比例增长或衰减。</bullet_item><para/>
        ///     <bullet_item>高斯 - 钟形函数，快速下降到正无穷大或负无穷大。</bullet_item><para/>
        ///     <bullet_item>四阶 - 四阶多项式函数。</bullet_item><para/>
        ///     <bullet_item>Epanechnikov - 不连续抛物线函数。</bullet_item><para/>
        ///     <bullet_item>五阶多项式—五阶多项式函数。</bullet_item><para/>
        ///     <bullet_item>常量 - 指标函数。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Kernel function")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _kernel_function_value _kernel_function { get; set; } = _kernel_function_value._EXPONENTIAL;

        public enum _kernel_function_value
        {
            /// <summary>
            /// <para>Exponential</para>
            /// <para>Exponential—The function grows or decays proportionally.</para>
            /// <para>指数 （Exponential） - 函数按比例增长或衰减。</para>
            /// </summary>
            [Description("Exponential")]
            [GPEnumValue("EXPONENTIAL")]
            _EXPONENTIAL,

            /// <summary>
            /// <para>Gaussian</para>
            /// <para>Gaussian—Bell-shaped function that falls off quickly toward plus or minus infinity.</para>
            /// <para>高斯 - 钟形函数，快速下降到正无穷大或负无穷大。</para>
            /// </summary>
            [Description("Gaussian")]
            [GPEnumValue("GAUSSIAN")]
            _GAUSSIAN,

            /// <summary>
            /// <para>Quartic</para>
            /// <para>Quartic—Fourth-order polynomial function.</para>
            /// <para>四阶 - 四阶多项式函数。</para>
            /// </summary>
            [Description("Quartic")]
            [GPEnumValue("QUARTIC")]
            _QUARTIC,

            /// <summary>
            /// <para>Epanechnikov</para>
            /// <para>Epanechnikov—A discontinuous parabolic function.</para>
            /// <para>Epanechnikov - 不连续抛物线函数。</para>
            /// </summary>
            [Description("Epanechnikov")]
            [GPEnumValue("EPANECHNIKOV")]
            _EPANECHNIKOV,

            /// <summary>
            /// <para>Fifth-order polynomial</para>
            /// <para>Fifth-order polynomial—Fifth-order polynomial function.</para>
            /// <para>五阶多项式—五阶多项式函数。</para>
            /// </summary>
            [Description("Fifth-order polynomial")]
            [GPEnumValue("POLYNOMIAL5")]
            _POLYNOMIAL5,

            /// <summary>
            /// <para>Constant</para>
            /// <para>Constant—An indicator function.</para>
            /// <para>常量 - 指标函数。</para>
            /// </summary>
            [Description("Constant")]
            [GPEnumValue("CONSTANT")]
            _CONSTANT,

        }

        /// <summary>
        /// <para>Bandwidth</para>
        /// <para>Used to specify the maximum distance at which data points are used for prediction. With increasing bandwidth, prediction bias increases and prediction variance decreases.</para>
        /// <para>用于指定数据点用于预测的最大距离。随着带宽的增加，预测偏差增加，预测方差减小。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Bandwidth")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _bandwidth { get; set; } = null;


        /// <summary>
        /// <para>Use spatial condition number threshold</para>
        /// <para><xdoc>
        ///   <para>Option to control the creation of prediction and prediction standard errors where the predictions are unstable. This option is only available for polynomials of order 1, 2, and 3.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Predictions will be created everywhere, including areas where the predictions are unstable. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Prediction and prediction standard errors will not be created where the predictions are unstable.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在预测不稳定的情况下，用于控制预测和预测标准误差的创建的选项。此选项仅适用于 1 阶、2 阶和 3 阶多项式。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中—将在所有位置创建预测，包括预测不稳定的区域。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 在预测不稳定的情况下，不会创建预测和预测标准误差。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use spatial condition number threshold")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _use_condition_number_value _use_condition_number { get; set; } = _use_condition_number_value._false;

        public enum _use_condition_number_value
        {
            /// <summary>
            /// <para>USE_CONDITION_NUMBER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("USE_CONDITION_NUMBER")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_USE_CONDITION_NUMBER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_USE_CONDITION_NUMBER")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Spatial condition number threshold</para>
        /// <para>Every invertible square matrix has a condition number that indicates how inaccurate the solution to the linear equations can be with a small change in the matrix coefficients (it can be due to imprecise data). If the condition number is large, a small change in the matrix coefficients results in a large change in the solution vector.</para>
        /// <para>每个可逆方阵都有一个条件编号，该条件编号表示线性方程的解在矩阵系数发生微小变化时有多不准确（这可能是由于数据不精确造成的）。如果条件数较大，则矩阵系数的微小变化会导致解向量的较大变化。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spatial condition number threshold")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _condition_number { get; set; } = null;


        /// <summary>
        /// <para>Weight field</para>
        /// <para>Used to emphasize an observation. The larger the weight, the more impact it has on the prediction. For coincident observations, assign the largest weight to the most reliable measurement.</para>
        /// <para>用于强调观察结果。权重越大，对预测的影响就越大。对于重合观测值，将最大权重分配给最可靠的测量值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Weight field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _weight_field { get; set; } = null;


        /// <summary>
        /// <para>Output surface type</para>
        /// <para><xdoc>
        ///   <para>Surface type to store the interpolation results.</para>
        ///   <bulletList>
        ///     <bullet_item>Prediction—Prediction surfaces are produced from the interpolated values.</bullet_item><para/>
        ///     <bullet_item>Standard error of prediction— Standard Error surfaces are produced from the standard errors of the interpolated values.</bullet_item><para/>
        ///     <bullet_item>Condition number—The Spatial condition number surface indicates the stability of calculations at a particular location. The larger the condition number, the more unstable the prediction, so locations with large condition numbers may be prone to artifacts and erratic predicted values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于存储插值结果的曲面类型。</para>
        ///   <bulletList>
        ///     <bullet_item>预测 - 根据插值生成预测曲面。</bullet_item><para/>
        ///     <bullet_item>预测标准误差 - 标准误差曲面由插值的标准误差生成。</bullet_item><para/>
        ///     <bullet_item>条件编号 - 空间条件编号表面指示特定位置计算的稳定性。条件编号越大，预测越不稳定，因此条件编号较大的位置可能容易出现伪影和预测值不稳定的情况。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output surface type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _output_type_value _output_type { get; set; } = _output_type_value._PREDICTION;

        public enum _output_type_value
        {
            /// <summary>
            /// <para>Prediction</para>
            /// <para>Prediction—Prediction surfaces are produced from the interpolated values.</para>
            /// <para>预测 - 根据插值生成预测曲面。</para>
            /// </summary>
            [Description("Prediction")]
            [GPEnumValue("PREDICTION")]
            _PREDICTION,

            /// <summary>
            /// <para>Standard error of prediction</para>
            /// <para>Standard error of prediction— Standard Error surfaces are produced from the standard errors of the interpolated values.</para>
            /// <para>预测标准误差 - 标准误差曲面由插值的标准误差生成。</para>
            /// </summary>
            [Description("Standard error of prediction")]
            [GPEnumValue("PREDICTION_STANDARD_ERROR")]
            _PREDICTION_STANDARD_ERROR,

            /// <summary>
            /// <para>Condition number</para>
            /// <para>Condition number—The Spatial condition number surface indicates the stability of calculations at a particular location. The larger the condition number, the more unstable the prediction, so locations with large condition numbers may be prone to artifacts and erratic predicted values.</para>
            /// <para>条件编号 - 空间条件编号表面指示特定位置计算的稳定性。条件编号越大，预测越不稳定，因此条件编号较大的位置可能容易出现伪影和预测值不稳定的情况。</para>
            /// </summary>
            [Description("Condition number")]
            [GPEnumValue("CONDITION_NUMBER")]
            _CONDITION_NUMBER,

        }

        public LocalPolynomialInterpolation SetEnv(object cellSize = null, object coincidentPoints = null, object extent = null, object geographicTransformations = null, object mask = null, object outputCoordinateSystem = null, object parallelProcessingFactor = null, object snapRaster = null, object workspace = null)
        {
            base.SetEnv(cellSize: cellSize, coincidentPoints: coincidentPoints, extent: extent, geographicTransformations: geographicTransformations, mask: mask, outputCoordinateSystem: outputCoordinateSystem, parallelProcessingFactor: parallelProcessingFactor, snapRaster: snapRaster, workspace: workspace);
            return this;
        }

    }

}